package utility;

import javax.swing.JTextField;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.PlainDocument;

public class DoubleRestrictionDocument extends PlainDocument {

    private final int limit;
    private final JTextField field;

    public DoubleRestrictionDocument(int limit, JTextField field) {
        this.limit = limit;
        this.field = field;
    }

    /**
     * Metoden tager længden på tekstfeltets String, tjekker om den er mindre end den angivne limit 
     * og at den midlertidige String som bliver oprettet indeholder Double format.  
     * 
     * @param offs
     * @param str
     * @param a
     * @throws BadLocationException
     */
    @Override
    public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
        if (str != null) {
            String txt = this.getText(0, getLength()) + str;
            if ((txt.length()) <= limit && txt.trim().matches("\\d+(\\,\\d*)?")) {
                super.insertString(offs, str, a);
            }
        }
    }
}
